/*
 * Interface elements for jQuery - http://interface.eyecon.ro
 *
 * Copyright (c) 2006 Stefan Petre
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 */
jQuery.iUtil = {
  getPosition: function (e) {
    var x = 0;
    var y = 0;
    var restoreStyle = false;
    var es = e.style;
    if (jQuery(e).css('display') == 'none') {
      oldVisibility = es.visibility;
      oldPosition = es.position;
      es.visibility = 'hidden';
      es.display = 'block';
      es.position = 'absolute';
      restoreStyle = true
    }
    var el = e;
    while (el) {
      x += el.offsetLeft + (el.currentStyle && !jQuery.browser.opera ? parseInt(el.currentStyle.borderLeftWidth) || 0 : 0);
      y += el.offsetTop + (el.currentStyle && !jQuery.browser.opera ? parseInt(el.currentStyle.borderTopWidth) || 0 : 0);
      el = el.offsetParent
    }
    el = e;
    while (el && el.tagName && el.tagName.toLowerCase() != 'body') {
      x -= el.scrollLeft || 0;
      y -= el.scrollTop || 0;
      el = el.parentNode
    }
    if (restoreStyle) {
      es.display = 'none';
      es.position = oldPosition;
      es.visibility = oldVisibility
    }
    return {
      x: x,
      y: y
    }
  },
  getPositionLite: function (el) {
    var x = 0,
      y = 0;
    while (el) {
      x += el.offsetLeft || 0;
      y += el.offsetTop || 0;
      el = el.offsetParent
    }
    return {
      x: x,
      y: y
    }
  },
  getSize: function (e) {
    var w = jQuery.css(e, 'width');
    var h = jQuery.css(e, 'height');
    var wb = 0;
    var hb = 0;
    var es = e.style;
    if (jQuery(e).css('display') != 'none') {
      wb = e.offsetWidth;
      hb = e.offsetHeight
    } else {
      oldVisibility = es.visibility;
      oldPosition = es.position;
      es.visibility = 'hidden';
      es.display = 'block';
      es.position = 'absolute';
      wb = e.offsetWidth;
      hb = e.offsetHeight;
      es.display = 'none';
      es.position = oldPosition;
      es.visibility = oldVisibility
    }
    return {
      w: w,
      h: h,
      wb: wb,
      hb: hb
    }
  },
  getSizeLite: function (el) {
    return {
      wb: el.offsetWidth || 0,
      hb: el.offsetHeight || 0
    }
  },
  getClient: function (e) {
    var h,
      w,
      de;
    if (e) {
      w = e.clientWidth;
      h = e.clientHeight
    } else {
      de = document.documentElement;
      w = window.innerWidth || self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
      h = window.innerHeight || self.innerHeight || (de && de.clientHeight) || document.body.clientHeight
    }
    return {
      w: w,
      h: h
    }
  },
  getScroll: function (e) {
    var t,
      l,
      w,
      h,
      iw,
      ih;
    if (e && e.nodeName.toLowerCase() != 'body') {
      t = e.scrollTop;
      l = e.scrollLeft;
      w = e.scrollWidth;
      h = e.scrollHeight;
      iw = 0;
      ih = 0
    } else {
      if (document.documentElement && document.documentElement.scrollTop) {
        t = document.documentElement.scrollTop;
        l = document.documentElement.scrollLeft;
        w = document.documentElement.scrollWidth;
        h = document.documentElement.scrollHeight
      } else if (document.body) {
        t = document.body.scrollTop;
        l = document.body.scrollLeft;
        w = document.body.scrollWidth;
        h = document.body.scrollHeight
      }
      iw = self.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0;
      ih = self.innerHeight || document.documentElement.clientHeight || document.body.clientHeight || 0
    }
    return {
      t: t,
      l: l,
      w: w,
      h: h,
      iw: iw,
      ih: ih
    }
  },
  getMargins: function (e, toInteger) {
    var el = jQuery(e);
    var t = el.css('marginTop') || '';
    var r = el.css('marginRight') || '';
    var b = el.css('marginBottom') || '';
    var l = el.css('marginLeft') || '';
    if (toInteger) return {
      t: parseInt(t) || 0,
      r: parseInt(r) || 0,
      b: parseInt(b) || 0,
      l: parseInt(l)
    };
    else return {
      t: t,
      r: r,
      b: b,
      l: l
    }
  },
  getPadding: function (e, toInteger) {
    var el = jQuery(e);
    var t = el.css('paddingTop') || '';
    var r = el.css('paddingRight') || '';
    var b = el.css('paddingBottom') || '';
    var l = el.css('paddingLeft') || '';
    if (toInteger) return {
      t: parseInt(t) || 0,
      r: parseInt(r) || 0,
      b: parseInt(b) || 0,
      l: parseInt(l)
    };
    else return {
      t: t,
      r: r,
      b: b,
      l: l
    }
  },
  getBorder: function (e, toInteger) {
    var el = jQuery(e);
    var t = el.css('borderTopWidth') || '';
    var r = el.css('borderRightWidth') || '';
    var b = el.css('borderBottomWidth') || '';
    var l = el.css('borderLeftWidth') || '';
    if (toInteger) return {
      t: parseInt(t) || 0,
      r: parseInt(r) || 0,
      b: parseInt(b) || 0,
      l: parseInt(l) || 0
    };
    else return {
      t: t,
      r: r,
      b: b,
      l: l
    }
  },
  getPointer: function (event) {
    var x = event.pageX || (event.clientX + (document.documentElement.scrollLeft || document.body.scrollLeft)) || 0;
    var y = event.pageY || (event.clientY + (document.documentElement.scrollTop || document.body.scrollTop)) || 0;
    return {
      x: x,
      y: y
    }
  },
  traverseDOM: function (nodeEl, func) {
    func(nodeEl);
    nodeEl = nodeEl.firstChild;
    while (nodeEl) {
      jQuery.iUtil.traverseDOM(nodeEl, func);
      nodeEl = nodeEl.nextSibling
    }
  },
  purgeEvents: function (nodeEl) {
    jQuery.iUtil.traverseDOM(nodeEl,
      function (el) {
        for (var attr in el) {
          if (typeof el[attr] === 'function') {
            el[attr] = null
          }
        }
      })
  },
  centerEl: function (el, axis) {
    var clientScroll = $.iUtil.getScroll();
    var windowSize = $.iUtil.getSize(el);
    if (!axis || axis == 'vertically') $(el).css({
      top: clientScroll.t + ((Math.max(clientScroll.h, clientScroll.ih) - clientScroll.t - windowSize.hb) / 2) + 'px'
    });
    if (!axis || axis == 'horizontally') $(el).css({
      left: clientScroll.l + ((Math.max(clientScroll.w, clientScroll.iw) - clientScroll.l - windowSize.wb) / 2) + 'px'
    })
  },
  fixPNG: function (el, emptyGIF) {
    var images = $('img[@src*="png"]', el || document),
      png;
    images.each(function () {
      png = this.src;
      this.src = emptyGIF;
      this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + png + "')"
    })
  }
};
[].indexOf || (Array.prototype.indexOf = function (v, n) {
  n = (n == null) ? 0 : n;
  var m = this.length;
  for (var i = n; i < m; i++) if (this[i] == v) return i;
  return -1
});
jQuery.fxCheckTag = function (e) {
  if (/^tr$|^td$|^tbody$|^caption$|^thead$|^tfoot$|^col$|^colgroup$|^th$|^body$|^header$|^script$|^frame$|^frameset$|^option$|^optgroup$|^meta$/i.test(e.nodeName)) return false;
  else return true
};
jQuery.fx.destroyWrapper = function (e, old) {
  var c = e.firstChild;
  var cs = c.style;
  cs.position = old.position;
  cs.marginTop = old.margins.t;
  cs.marginLeft = old.margins.l;
  cs.marginBottom = old.margins.b;
  cs.marginRight = old.margins.r;
  cs.top = old.top + 'px';
  cs.left = old.left + 'px';
  e.parentNode.insertBefore(c, e);
  e.parentNode.removeChild(e)
};
jQuery.fx.buildWrapper = function (e) {
  if (!jQuery.fxCheckTag(e)) return false;
  var t = jQuery(e);
  var es = e.style;
  var restoreStyle = false;
  var oldStyle = {};
  oldStyle.position = t.css('position');
  if (t.css('display') == 'none') {
    oldVisibility = t.css('visibility');
    es.visibility = 'hidden';
    es.display = '';
    restoreStyle = true
  }
  oldStyle.sizes = jQuery.iUtil.getSize(e);
  oldStyle.margins = jQuery.iUtil.getMargins(e);
  var oldFloat = e.currentStyle ? e.currentStyle.styleFloat : t.css('float');
  oldStyle.top = parseInt(t.css('top')) || 0;
  oldStyle.left = parseInt(t.css('left')) || 0;
  var wid = 'w_' + parseInt(Math.random() * 10000);
  var wr = document.createElement(/^img$|^br$|^input$|^hr$|^select$|^textarea$|^object$|^iframe$|^button$|^form$|^table$|^ul$|^dl$|^ol$/i.test(e.nodeName) ? 'div' : e.nodeName);
  jQuery.attr(wr, 'id', wid);
  wr.className = 'fxWrapper';
  var wrs = wr.style;
  var top = 0;
  var left = 0;
  if (oldStyle.position == 'relative' || oldStyle.position == 'absolute') {
    top = oldStyle.top;
    left = oldStyle.left
  }
  wrs.display = 'none';
  wrs.top = top + 'px';
  wrs.left = left + 'px';
  wrs.position = oldStyle.position != 'relative' && oldStyle.position != 'absolute' ? 'relative' : oldStyle.position;
  wrs.overflow = 'hidden';
  wrs.height = oldStyle.sizes.hb + 'px';
  wrs.width = oldStyle.sizes.wb + 'px';
  wrs.marginTop = oldStyle.margins.t;
  wrs.marginRight = oldStyle.margins.r;
  wrs.marginBottom = oldStyle.margins.b;
  wrs.marginLeft = oldStyle.margins.l;
  if (jQuery.browser.msie) {
    wrs.styleFloat = oldFloat
  } else {
    wrs.cssFloat = oldFloat
  }
  e.parentNode.insertBefore(wr, e);
  es.marginTop = '0px';
  es.marginRight = '0px';
  es.marginBottom = '0px';
  es.marginLeft = '0px';
  es.position = 'absolute';
  es.listStyle = 'none';
  es.top = '0px';
  es.left = '0px';
  if (restoreStyle) {
    es.display = 'none';
    es.visibility = oldVisibility
  }
  wr.appendChild(e);
  wrs.display = 'block';
  return {
    oldStyle: oldStyle,
    wrapper: jQuery(wr)
  }
};
jQuery.fx.namedColors = {
  aqua: [0, 255, 255],
  azure: [240, 255, 255],
  beige: [245, 245, 220],
  black: [0, 0, 0],
  blue: [0, 0, 255],
  brown: [165, 42, 42],
  cyan: [0, 255, 255],
  darkblue: [0, 0, 139],
  darkcyan: [0, 139, 139],
  darkgrey: [169, 169, 169],
  darkgreen: [0, 100, 0],
  darkkhaki: [189, 183, 107],
  darkmagenta: [139, 0, 139],
  darkolivegreen: [85, 107, 47],
  darkorange: [255, 140, 0],
  darkorchid: [153, 50, 204],
  darkred: [139, 0, 0],
  darksalmon: [233, 150, 122],
  darkviolet: [148, 0, 211],
  fuchsia: [255, 0, 255],
  gold: [255, 215, 0],
  green: [0, 128, 0],
  indigo: [75, 0, 130],
  khaki: [240, 230, 140],
  lightblue: [173, 216, 230],
  lightcyan: [224, 255, 255],
  lightgreen: [144, 238, 144],
  lightgrey: [211, 211, 211],
  lightpink: [255, 182, 193],
  lightyellow: [255, 255, 224],
  lime: [0, 255, 0],
  magenta: [255, 0, 255],
  maroon: [128, 0, 0],
  navy: [0, 0, 128],
  olive: [128, 128, 0],
  orange: [255, 165, 0],
  pink: [255, 192, 203],
  purple: [128, 0, 128],
  red: [255, 0, 0],
  silver: [192, 192, 192],
  white: [255, 255, 255],
  yellow: [255, 255, 0]
};
jQuery.fx.parseColor = function (color, notColor) {
  if (jQuery.fx.namedColors[color]) return {
    r: jQuery.fx.namedColors[color][0],
    g: jQuery.fx.namedColors[color][1],
    b: jQuery.fx.namedColors[color][2]
  };
  else if (result = /^rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)$/.exec(color)) return {
    r: parseInt(result[1]),
    g: parseInt(result[2]),
    b: parseInt(result[3])
  };
  else if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)$/.exec(color)) return {
    r: parseFloat(result[1]) * 2.55,
    g: parseFloat(result[2]) * 2.55,
    b: parseFloat(result[3]) * 2.55
  };
  else if (result = /^#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/.exec(color)) return {
    r: parseInt("0x" + result[1] + result[1]),
    g: parseInt("0x" + result[2] + result[2]),
    b: parseInt("0x" + result[3] + result[3])
  };
  else if (result = /^#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/.exec(color)) return {
    r: parseInt("0x" + result[1]),
    g: parseInt("0x" + result[2]),
    b: parseInt("0x" + result[3])
  };
  else return notColor == true ? false : {
      r: 255,
      g: 255,
      b: 255
    }
};
jQuery.fx.cssProps = {
  borderBottomWidth: 1,
  borderLeftWidth: 1,
  borderRightWidth: 1,
  borderTopWidth: 1,
  bottom: 1,
  fontSize: 1,
  height: 1,
  left: 1,
  letterSpacing: 1,
  lineHeight: 1,
  marginBottom: 1,
  marginLeft: 1,
  marginRight: 1,
  marginTop: 1,
  maxHeight: 1,
  maxWidth: 1,
  minHeight: 1,
  minWidth: 1,
  opacity: 1,
  outlineOffset: 1,
  outlineWidth: 1,
  paddingBottom: 1,
  paddingLeft: 1,
  paddingRight: 1,
  paddingTop: 1,
  right: 1,
  textIndent: 1,
  top: 1,
  width: 1,
  zIndex: 1
};
jQuery.fx.colorCssProps = {
  backgroundColor: 1,
  borderBottomColor: 1,
  borderLeftColor: 1,
  borderRightColor: 1,
  borderTopColor: 1,
  color: 1,
  outlineColor: 1
};
jQuery.fx.cssSides = ['Top', 'Right', 'Bottom', 'Left'];
jQuery.fx.cssSidesEnd = {
  'borderWidth': ['border', 'Width'],
  'borderColor': ['border', 'Color'],
  'margin': ['margin', ''],
  'padding': ['padding', '']
};
jQuery.fn.extend({
  animate: function (prop, speed, easing, callback) {
    return this.queue(function () {
      var opt = jQuery.speed(speed, easing, callback);
      var e = new jQuery.fxe(this, opt, prop)
    })
  },
  pause: function (speed, callback) {
    return this.queue(function () {
      var opt = jQuery.speed(speed, callback);
      var e = new jQuery.pause(this, opt)
    })
  },
  stop: function (step) {
    return this.each(function () {
      if (this.animationHandler) jQuery.stopAnim(this, step)
    })
  },
  stopAll: function (step) {
    return this.each(function () {
      if (this.animationHandler) jQuery.stopAnim(this, step);
      if (this.queue && this.queue['fx']) this.queue.fx = []
    })
  }
});
jQuery.extend({
  pause: function (elem, options) {
    var z = this,
      values;
    z.step = function () {
      if (jQuery.isFunction(options.complete)) options.complete.apply(elem)
    };
    z.timer = setInterval(function () {
        z.step()
      },
      options.duration);
    elem.animationHandler = z
  },
  easing: {
    linear: function (p, n, firstNum, delta, duration) {
      return ((-Math.cos(p * Math.PI) / 2) + 0.5) * delta + firstNum
    }
  },
  fxe: function (elem, options, prop) {
    var z = this,
      values;
    var y = elem.style;
    var oldOverflow = jQuery.css(elem, "overflow");
    var oldDisplay = jQuery.css(elem, "display");
    var props = {};
    z.startTime = (new Date()).getTime();
    options.easing = options.easing && jQuery.easing[options.easing] ? options.easing : 'linear';
    z.getValues = function (tp, vp) {
      if (jQuery.fx.cssProps[tp]) {
        if (vp == 'show' || vp == 'hide' || vp == 'toggle') {
          if (!elem.orig) elem.orig = {};
          var r = parseFloat(jQuery.css(elem, tp));
          elem.orig[tp] = r && r > -10000 ? r : (parseFloat(jQuery.css(elem, tp)) || 0);
          vp = vp == 'toggle' ? (oldDisplay == 'none' ? 'show' : 'hide') : vp;
          options[vp] = true;
          props[tp] = vp == 'show' ? [0, elem.orig[tp]] : [elem.orig[tp], 0];
          if (tp != 'opacity') y[tp] = props[tp][0] + (tp != 'zIndex' && tp != 'fontWeight' ? 'px' : '');
          else jQuery.attr(y, "opacity", props[tp][0])
        } else {
          props[tp] = [parseFloat(jQuery.css(elem, tp)), parseFloat(vp) || 0]
        }
      } else if (jQuery.fx.colorCssProps[tp]) props[tp] = [jQuery.fx.parseColor(jQuery.css(elem, tp)), jQuery.fx.parseColor(vp)];
      else if (/^margin$|padding$|border$|borderColor$|borderWidth$/i.test(tp)) {
        var m = vp.replace(/\s+/g, ' ').replace(/rgb\s*\(\s*/g, 'rgb(').replace(/\s*,\s*/g, ',').replace(/\s*\)/g, ')').match(/([^\s]+)/g);
        switch (tp) {
          case 'margin':
          case 'padding':
          case 'borderWidth':
          case 'borderColor':
            m[3] = m[3] || m[1] || m[0];
            m[2] = m[2] || m[0];
            m[1] = m[1] || m[0];
            for (var i = 0; i < jQuery.fx.cssSides.length; i++) {
              var nmp = jQuery.fx.cssSidesEnd[tp][0] + jQuery.fx.cssSides[i] + jQuery.fx.cssSidesEnd[tp][1];
              props[nmp] = tp == 'borderColor' ? [jQuery.fx.parseColor(jQuery.css(elem, nmp)), jQuery.fx.parseColor(m[i])] : [parseFloat(jQuery.css(elem, nmp)), parseFloat(m[i])]
            }
            break;
          case 'border':
            for (var i = 0; i < m.length; i++) {
              var floatVal = parseFloat(m[i]);
              var sideEnd = !isNaN(floatVal) ? 'Width' : (!/transparent|none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset/i.test(m[i]) ? 'Color' : false);
              if (sideEnd) {
                for (var j = 0; j < jQuery.fx.cssSides.length; j++) {
                  nmp = 'border' + jQuery.fx.cssSides[j] + sideEnd;
                  props[nmp] = sideEnd == 'Color' ? [jQuery.fx.parseColor(jQuery.css(elem, nmp)), jQuery.fx.parseColor(m[i])] : [parseFloat(jQuery.css(elem, nmp)), floatVal]
                }
              } else {
                y['borderStyle'] = m[i]
              }
            }
            break
        }
      } else {
        y[tp] = vp
      }
      return false
    };
    for (p in prop) {
      if (p == 'style') {
        var newStyles = jQuery.parseStyle(prop[p]);
        for (np in newStyles) {
          this.getValues(np, newStyles[np])
        }
      } else if (p == 'className') {
        if (document.styleSheets) for (var i = 0; i < document.styleSheets.length; i++) {
          var cssRules = document.styleSheets[i].cssRules || document.styleSheets[i].rules || null;
          if (cssRules) {
            for (var j = 0; j < cssRules.length; j++) {
              if (cssRules[j].selectorText == '.' + prop[p]) {
                var rule = new RegExp('\.' + prop[p] + ' {');
                var styles = cssRules[j].style.cssText;
                var newStyles = jQuery.parseStyle(styles.replace(rule, '').replace(/}/g, ''));
                for (np in newStyles) {
                  this.getValues(np, newStyles[np])
                }
              }
            }
          }
        }
      } else {
        this.getValues(p, prop[p])
      }
    }
    y.display = oldDisplay == 'none' ? 'block' : oldDisplay;
    y.overflow = 'hidden';
    z.step = function () {
      var t = (new Date()).getTime();
      if (t > options.duration + z.startTime) {
        clearInterval(z.timer);
        z.timer = null;
        for (p in props) {
          if (p == "opacity") jQuery.attr(y, "opacity", props[p][1]);
          else if (typeof props[p][1] == 'object') y[p] = 'rgb(' + props[p][1].r + ',' + props[p][1].g + ',' + props[p][1].b + ')';
          else y[p] = props[p][1] + (p != 'zIndex' && p != 'fontWeight' ? 'px' : '')
        }
        if (options.hide || options.show) for (var p in elem.orig) if (p == "opacity") jQuery.attr(y, p, elem.orig[p]);
        else y[p] = "";
        y.display = options.hide ? 'none' : (oldDisplay != 'none' ? oldDisplay : 'block');
        y.overflow = oldOverflow;
        elem.animationHandler = null;
        if (jQuery.isFunction(options.complete)) options.complete.apply(elem)
      } else {
        var n = t - this.startTime;
        var pr = n / options.duration;
        for (p in props) {
          if (typeof props[p][1] == 'object') {
            y[p] = 'rgb(' + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].r, (props[p][1].r - props[p][0].r), options.duration)) + ',' + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].g, (props[p][1].g - props[p][0].g), options.duration)) + ',' + parseInt(jQuery.easing[options.easing](pr, n, props[p][0].b, (props[p][1].b - props[p][0].b), options.duration)) + ')'
          } else {
            var pValue = jQuery.easing[options.easing](pr, n, props[p][0], (props[p][1] - props[p][0]), options.duration);
            if (p == "opacity") jQuery.attr(y, "opacity", pValue);
            else y[p] = pValue + (p != 'zIndex' && p != 'fontWeight' ? 'px' : '')
          }
        }
      }
    };
    z.timer = setInterval(function () {
        z.step()
      },
      13);
    elem.animationHandler = z
  },
  stopAnim: function (elem, step) {
    if (step) elem.animationHandler.startTime -= 100000000;
    else {
      window.clearInterval(elem.animationHandler.timer);
      elem.animationHandler = null;
      jQuery.dequeue(elem, "fx")
    }
  }
});
jQuery.parseStyle = function (styles) {
  var newStyles = {};
  if (typeof styles == 'string') {
    styles = styles.toLowerCase().split(';');
    for (var i = 0; i < styles.length; i++) {
      rule = styles[i].split(':');
      if (rule.length == 2) {
        newStyles[jQuery.trim(rule[0].replace(/\-(\w)/g,
          function (m, c) {
            return c.toUpperCase()
          }))] = jQuery.trim(rule[1])
      }
    }
  }
  return newStyles
};
jQuery.iFisheye = {
  build: function (options) {
    return this.each(function () {
      var el = this;
      el.fisheyeCfg = {
        items: jQuery(options.items, this),
        container: jQuery(options.container, this),
        pos: jQuery.iUtil.getPosition(this),
        itemWidth: options.itemWidth,
        itemsText: options.itemsText,
        proximity: options.proximity,
        valign: options.valign,
        halign: options.halign,
        maxWidth: options.maxWidth
      };
      jQuery.iFisheye.positionContainer(el, 0);
      jQuery(window).bind('resize',
        function () {
          el.fisheyeCfg.pos = jQuery.iUtil.getPosition(el);
          jQuery.iFisheye.positionContainer(el, 0);
          jQuery.iFisheye.positionItems(el)
        });
      jQuery.iFisheye.positionItems(el);
      el.fisheyeCfg.items.bind('mouseover',
        function () {
          jQuery(el.fisheyeCfg.itemsText, this).get(0).style.display = 'block'
        }).bind('mouseout',
        function () {
          jQuery(el.fisheyeCfg.itemsText, this).get(0).style.display = 'none'
        });
      jQuery(document).bind('mousemove',
        function (e) {
          var pointer = jQuery.iUtil.getPointer(e);
          var toAdd = 0;
          if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'center') var posx = pointer.x - el.fisheyeCfg.pos.x - (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size()) / 2 - el.fisheyeCfg.itemWidth / 2;
          else if (el.fisheyeCfg.halign && el.fisheyeCfg.halign == 'right') var posx = pointer.x - el.fisheyeCfg.pos.x - el.offsetWidth + el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size();
          else var posx = pointer.x - el.fisheyeCfg.pos.x;
          var posy = Math.pow(pointer.y - el.fisheyeCfg.pos.y - el.offsetHeight / 2, 2);
          el.fisheyeCfg.items.each(function (nr) {
            distance = Math.sqrt(Math.pow(posx - nr * el.fisheyeCfg.itemWidth, 2) + posy);
            distance -= el.fisheyeCfg.itemWidth / 2;
            distance = distance < 0 ? 0 : distance;
            distance = distance > el.fisheyeCfg.proximity ? el.fisheyeCfg.proximity : distance;
            distance = el.fisheyeCfg.proximity - distance;
            extraWidth = el.fisheyeCfg.maxWidth * distance / el.fisheyeCfg.proximity;
            this.style.width = el.fisheyeCfg.itemWidth + extraWidth + 'px';
            this.style.left = el.fisheyeCfg.itemWidth * nr + toAdd + 'px';
            toAdd += extraWidth
          });
          jQuery.iFisheye.positionContainer(el, toAdd)
        })
    })
  },
  positionContainer: function (el, toAdd) {
    if (el.fisheyeCfg.halign) if (el.fisheyeCfg.halign == 'center') el.fisheyeCfg.container.get(0).style.left = (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size()) / 2 - toAdd / 2 + 'px';
    else if (el.fisheyeCfg.halign == 'left') el.fisheyeCfg.container.get(0).style.left = -toAdd / el.fisheyeCfg.items.size() + 'px';
    else if (el.fisheyeCfg.halign == 'right') el.fisheyeCfg.container.get(0).style.left = (el.offsetWidth - el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size()) - toAdd / 2 + 'px';
    el.fisheyeCfg.container.get(0).style.width = el.fisheyeCfg.itemWidth * el.fisheyeCfg.items.size() + toAdd + 'px'
  },
  positionItems: function (el) {
    el.fisheyeCfg.items.each(function (nr) {
      this.style.width = el.fisheyeCfg.itemWidth + 'px';
      this.style.left = el.fisheyeCfg.itemWidth * nr + 'px'
    })
  }
};
jQuery.fn.Fisheye = jQuery.iFisheye.build;
